[AWS Dev Day ベルリン 2019]マルチーリージョン・Active-Activeなアプリケーションを構築しよう!
2019年10月27日にベルリンで行われた AWS Dev Day Berlin 2019 に参加してきました。
同イベントから、マルリリージョンなアプリケーション開発に関する次のセッションについて紹介します。
セッション
タイトル : Going Global with Serverless
可用性の向上やグローバルに展開するサービスのパフォーマンス向上などのために、複数リージョンにアプリケーションを展開したいことがあります。 以下では、Global Accelerator と DynamoDB Global Table を利用し
- マルチージョン
- Active-Active
- ハイパフォーマンス
なアプリケーションを構築する方法を紹介します。
- 発表者 : Darko Mesaroš(AWS Specialist Solutions Architect)
- セッション資料 : AWS DevDay Berlin 2019 - Going Global With Serverless
可用性
冗長構成を取ることで可用性は向上します。
1台構成で可用性が 99% のシステムがあるとします。
2台の冗長構成にすると、サービスを利用できないのは、2台で同時に障害が起きているときです。 そのような確率は (1-0.99) ^ 2 のため、可用性は 1 - (1-0.99) ^ 2 から 99.99% となります。
同様にして、3台構成の可用性は 1 - (1-0.99) ^ 3 から 99.9999% となります。
AWS インフラに置き換えると、システムをマルチAZ・マルチリージョンにデプロイして冗長構成にすることで、可用性は向上します。
マルチリージョン化
マルチリージョン対応を行うと、リージョンレベルの障害に対しても耐障害性が向上します。
グローバルに展開するサービスでは、ユーザーが最寄りのリージョンにアクセスできるようになり、レイテンシーが低下します。
運用コスト
いいことばかりではありません。
可用性向上のトレードオフとして、システムは複雑さを増し、サーバー台数は増え、費用も運用負荷も増えます。
データストア
マルチリージョンアーキテクチャにはどのデータストアを用いればよいでしょうか?
DynamoDB Global Tables を利用すると、各リージョンにマスター DB インスタンスを配置でき、アプリケーションは同じリージョン内のデータストアに読み書きすればよくなります。
一方で、リージョン間のデータレプリケーションには数秒のラグが発生する 結果整合性 モデルを採用しているので、注意が必要です。
ルーティング
マルチリージョンなアプリケーションを各リージョンにルーティングするには
- Global Accelerator
- Route 53
といったサービスを利用します。
Global Accelerator を利用すると、エッジ - AWS エンドポイント間は AWS のグローバルネットワークを介し、適切なリージョンにルーティングされ、インターネットのレイテンシーとジッターを低減します
Route 53 を利用すると
- レイテンシー
- 位置情報
といったルーティングポリシーを元に、適切なリージョンにルーティングされます。
トラフィックのパフォーマンスが重要な場合は Global Accelerator が向いているかもしれません。
一方で、GDPR 対応のためにクライアント・サーバーの場所を意識したサービスを提供したいなど、パフォーマンス以外の様々なルールでルーティングしたい場合、ポリシーの選択肢が多い Route 53 のほうが向いているかもしれません。
最後に
発表者の AWS ソリューション・アーキテクトはカジュアルにマルチリージョン & アクティヴ・アクティヴなインフラのお手軽さ・素晴らしさを語っていましたが、一般人にはまだまだ敷居の高いアーキテクチャーです。
とはいえ、近年の AWS では
- AWS Global Accelerator
- Amazon DynamoDB Global Tables
- Amazon Aurora Global Database
といったマルチリージョンアーキテクチャーに適用可能なサービスが立て続けにリリースされているため、従来よりは敷居が下がっていることは確かかと思います。
リスクを取れる範囲で、ピンポイントでもいいからこれらの技術を投入できるよう、技術評価は続けたいと思います。
参考
- AWS DevDay Berlin 2019 - Going Global With Serverless
- How to build a multi-region active-active architecture on AWS
- Build a serverless multi-region, active-active backend solution — within a VPC
- Build a serverless multi-region, active-active backend solution in an hour
- Multi-region serverless backend — reloaded - Adrian Hornsby - Medium